Add support for Log4j 1 configuration formats#145
Merged
Conversation
Adds an API to perform automatic conversions between different logging configuration file formats and a basic implementation. The implementation supports the following configuration file formats: - Log4j Core 2 XML, - Log4j Core 2 JSON, - Log4j Core 2 YAML, - Log4j Core 2 Properties (read-only), - Log4j Core 3 Properties. The API is extensible through `ServiceLoader` and allows integrators to provide support for additional configuration file formats. Read-only support for the Log4j 1 Properties and Log4j 1 XML configuration formats will be provided in a separate PR. **Note**: Currently the API is only accessible from Java code. Its main purpose is to provide a "Migrate Log4j 1.x to Log4j Core 2.x", a "Migrate Logback to Log4j Core 2.x" and a "Migrate JUL to Log4j Core 2.x" [OpenRewrite recipe](https://docs.openrewrite.org/recipes/java/logging/log4j). A `picocli`-based `log4j-transform-cli` tool to access all the goodies in this repository, will be provided later. Closes apache/logging-log4j2#2080
This adds support for Log4j 1 configuration formats. Since Log4j Core 2 is a complete rewrite for Log4j 1, the converter: - Needs to know exactly what configuration parameters a Log4j 1 component supports to create an equivalent Log4j Core 2 configuration. - Introduces a pluggable `spi/v1/Log4j1ComponentParser` interface. For each supported Log4j 1 component, an implementation of this interface must be provided and registered with `ServiceLoader`. The following Log4j 1 components are currently supported: - Appenders: `ConsoleAppender`, `DailyRollingFileAppender`, `FileAppender` and `RollingFileAppender`. - Filters: `DenyAllFilter`, `LevelMatchFilter`, `LevelRangeFilter` and `StringMatchFilter`. - Layouts: `HTMLLayout`, `PatternLayout`, `SimpleLayout`, `TTCCLayout`. Part of apache/logging-log4j2#3220
…erter # Conflicts: # log4j-converter-config/pom.xml # log4j-converter-config/src/main/java/org/apache/logging/converter/config/ConfigurationConverter.java # log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/ComponentUtils.java # log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/DefaultConfigurationConverter.java # log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/XmlUtils.java # log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/AbstractJacksonConfigurationMapper.java # log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/PropertiesV2ConfigurationParser.java # log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/XmlConfigurationMapper.java # log4j-converter-config/src/test/java/org/apache/logging/converter/config/ConfigurationConverterTest.java # log4j-converter-config/src/test/java/org/apache/logging/converter/config/internal/AbstractConfigurationMapperTest.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This adds support for Log4j 1 configuration formats. Since Log4j Core 2 is a complete rewrite for Log4j 1, the converter:
spi/v1/Log4j1ComponentParserinterface. For each supported Log4j 1 component, an implementation of this interface must be provided and registered withServiceLoader.The following Log4j 1 components are currently supported:
ConsoleAppender,DailyRollingFileAppender,FileAppenderandRollingFileAppender.DenyAllFilter,LevelMatchFilter,LevelRangeFilterandStringMatchFilter.HTMLLayout,PatternLayout,SimpleLayout,TTCCLayout.Part of apache/logging-log4j2#3220